postMessage sends data, onmessage receives it. Communication is asynchronous and uses event-driven model.
postMessage queues a message in the recipient's event loop. The receiving side processes the message via onmessage callback when the thread is idle. This is non-blocking; multiple messages can be queued and processed in order. No direct return values; use reply messages for two-way communication.